#!/usr/bin/env node
//Node CLI 应用入口必须要有这样的文件头👆，如果是Linux或者macOS系统下还需要修改此文件的读写权限为755(具体实现：chmod 755 cli.js)

/**
 * inquirer.prompt方法：
 * 1.用来发起一个命令行的询问
 * 2.接受一个数组参数，数组的每一个成员都是我们发起的一个问题:
 *      1.type：用户的输入方式
 *      2.name：返回值的键
 *      3.message：屏幕上给用户的提示信息
 */


const fs = require('fs');
const path = require('path');
const inquirer = require('inquirer');
const ejs = require('ejs');


inquirer.prompt([
    {
        type: 'input',
        name: 'name',
        message: 'Project name?',
    }
]).then(answers => {
    console.log('answers...', answers);
    //根据用户回答的结果生成文件

    //模板目录
    const tmplDir = path.join(__dirname, 'templates');
    //目标目录
    const destDir = process.cwd();

    //将模板下的文件全部转换到目标目录
    fs.readdir(tmplDir, (err, files) => {
        if (err) throw err;
        files.forEach(file => {
            console.log('file...', file);//file是相对于templates下的相对路径
            //通过模板引擎去渲染该路径(file：相对于templates下的相对路径)
            ejs.renderFile(path.join(tmplDir, file), answers, (err, result) => {
                if (err) throw err;
                console.log('result...', result);
                //将返回结果写入目标文件路径
                fs.writeFileSync(path.join(destDir, file), result);
            });
        });
    });
});